function final = snr_setup_ant_densemap_eval (elev, azim, densemap, method)
    if (nargin < 4),  method = 'linear';  end
    %method = 'linear';  % TEST
    final = NaN(size(elev));
    idx = ~isnan(elev) & ~isnan(azim);
    if ~any(idx),  return;  end
    azim = azimuth_range_positive(azim);
    %min(azim), max(azim)  % DEBUG
    %[min(elev), max(elev), min(azim), max(azim)]  % DEBUG
    try
        final(idx) = interp2_linear_c(...
            double(densemap.azim_grid(1,:)), ...
            double(densemap.elev_grid(:,1)), ...
            double(densemap.final_grid), ...
            double(azim(idx)), ...
            double(elev(idx)));
    catch ME
        if ~is_error_undefined_function (ME),  rethrow(ME);  end
        final(idx) = interp2(...
           densemap.azim_grid, densemap.elev_grid, ...
           densemap.final_grid, ...
           azim(idx), elev(idx), ...
           method);
           %['*' method]);  % not supported by Octave.
    end
    %sum(isnan(final))  % DEBUG
end

